#pragma once
#include <cstddef> // for size_t
#include <map>
#include <set>
#include <string>

// 文件开头字段长度
constexpr size_t FILE_TS_NUM = 2;   // 时间片个数 2 Byte
constexpr size_t FILE_TS_ID = 6;   // 时间片编号 6 Byte
constexpr size_t FILE_TS_OFFSET = 8;   // 偏移地址 8 Byte

// 时间片头、尾字段长度
constexpr size_t TS_HEAD = 2;   // 时间片帧头 2 Byte
constexpr size_t TS_LENGTH = 4;   // 时间片帧长度 4 Byte
constexpr size_t TS_ID = FILE_TS_ID;   // 时间片编号 6 Byte
constexpr size_t PXI_NUM = 1;   // PXI数量 1 Byte
constexpr size_t TS_END = 2;   // 时间片帧尾 2 Byte 

// PXI头段长度
constexpr size_t PXI_ID = 2;   // PXI板号 2 Byte
constexpr size_t PXI_LENGTH = 4;   // PXI数据块长度 4 Byte
constexpr size_t FEE_NUM = 2;   // FEE数量 2 Byte

// FEE头字段长度
constexpr size_t FEE_ID = 2;   // FEE板号 2 Byte
constexpr size_t FEE_LENGTH = 3;   // FEE数据块长度 3 Byte

// 探测器名称常量
constexpr const char* DET_MUSIC = "music";
constexpr const char* DET_SMD = "smd";
constexpr const char* DET_TOF   = "tof";
constexpr const char* DET_TPC   = "tpc";

// PXI板号 -> 探测器名称映射
inline const std::map<uint8_t, std::string> PXI_TO_DETECTOR = {
    {12, DET_MUSIC},   // 12号PXI属于Music探测器
    {16, DET_SMD},
    {0, DET_TOF},     // TOF探测器
    {2, DET_TOF},   
    {6, DET_TPC},  // TPC探测器
    {7, DET_TPC},  
    // 可以自由添加
};
// 其他常量（可扩展）

